class Solution {
public:
    int findNumberOfLIS(vector<int>& nums) 
    {
        int n=nums.size();
        //以nums[i]结尾的最长递增子序列的长度
        vector<int>len(n,1);
        //以nums[i]结尾的所有最长递增子序列的个数
        vector<int>count(n,1);
        int maxlen=len[0];//默认最长的子序列长度为1
        int retcount=count[0];//默认的最长子序列的个数
        for(int i=1;i<n;i++)
        {
            for(int j=0;j<i;j++)
            {
                if(nums[i]>nums[j])
                {
                    if(len[j]+1>len[i])
                    {
                        //此时有更长的递增子序列
                        len[i]=len[j]+1;
                        //更新计数 注意遇到长度更长的递增子序列的时候 我们此时不能直接跟新计数为1
                        //此时跟新为count[j] 因为count[j]此时可能不是唯一的了
                        count[i]=count[j];

                    }
                    else if(len[j]+1==len[i])
                    {
                        //此时来了一个和我长度一样的序列
                        //注意这里是加等count[j]而不是1 因为我们的nums[i]跟在num[j]后面
                        //有几个count[j]就会增加多少个
                        count[i]+=count[j];
                    }
                }
            }
            if(len[i]>maxlen)
            {
                //此时计数清空
                maxlen=len[i];
                retcount=count[i];
            }
            else if(len[i]==maxlen)
            {
                //累加计数
                retcount+=count[i];
            }

        }
        return retcount;
    }
};